iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

Keyword list 是由我們學過的 list 加上 tuple 組合而成
且 tuple 必須要是由 atom 的 key 與另一個值組成

原本的結構寫法為

[{:name, "Jack"}, {:age, 20}]

簡化成

[name: "Jack", age: 20]

keyword list 跟之前介紹的 map 差異為

  • keyword list 是有順序的,按照定義時的順序排
  • key 可以重複
  • key 一定要是 atom
  • map 可以用 pattern matching 取特定 key,keyword list 的行為跟 list 一樣

keyword list 最常使用在函式的 options 裡
我們使用 String.split/3 來示範

如果有一個字串 "title,page,price" 我們想要把每個字分開

iex> String.split("title,page,price", ",")
["title", "page", "price"]

不過我們目前只有用到兩個變數,String.split/3 的定義為

split(string, pattern, options \\ [])

這個 options 預設為空 list
函式的文件裡面的 options 選項有兩個

  • :parts 總共要分成幾部分,需填入正整數或是 :infinity 預設為 :infinity
  • :trim 預設為 false 會把結果中的空字串去除

使用的時候使用 keyword list 填入

iex> String.split("title,page,price", ",", [parts: 2])
["title", "page,price"]

而且在函式的最後一個變數使用 keyword list 可以省略 []

iex> String.split("title,,page,price,,", ",", trim: true)
["title", "page", "price"]

上一篇
自訂 Sigil
下一篇
看似語法其實只是呼叫函式的語法糖
系列文
通勤看手機就可讀懂的 Elixir 語言入門教學24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言